HAL SMARTCARD Types

HAL SMARTCARD Types

group SMARTCARD_Exported_Types

Typedefs

typedef struct hal_smartcard_handle_s hal_smartcard_handle_t

HAL SMARTCARD handler type

typedef void ( * hal_smartcard_cb_t ) ( hal_smartcard_handle_t * hsmartcard )

HAL SMARTCARD Generic SMARTCARD callback Type

Enums

enum hal_smartcard_t

HAL SMARTCARD Instance Definition.

Values:

enumerator HAL_SMARTCARD1

Instance USART1

enumerator HAL_SMARTCARD2

Instance USART2

enumerator HAL_SMARTCARD3

Instance USART3

enum hal_smartcard_state_t

HAL SMARTCARD State enum Definition.

Values:

enumerator HAL_SMARTCARD_STATE_RESET

Peripheral is not initialized

enumerator HAL_SMARTCARD_STATE_INIT

Peripheral is initialized but not configured

enumerator HAL_SMARTCARD_STATE_IDLE

Peripheral is initialized and a config is set

enumerator HAL_SMARTCARD_STATE_RX_ACTIVE

Peripheral is receiving

enumerator HAL_SMARTCARD_STATE_TX_ACTIVE

Peripheral is transmitting

enumerator HAL_SMARTCARD_STATE_ABORT

Peripheral is aborting the current process

enum hal_smartcard_stop_bits_t

HAL SMARTCARD Stop bits enum definition.

Values:

enumerator HAL_SMARTCARD_STOP_BIT_0_5

0.5 stop bit 0x00001000 0.5 stop bit 1.5 stop bits

enumerator HAL_SMARTCARD_STOP_BIT_1_5

1.5 stop bits

enum hal_smartcard_io_invert_status_t

HAL SMARTCARD inversion status definition.

Values:

enumerator HAL_SMARTCARD_IO_INVERT_DISABLED

Not Inverted Inverted

enumerator HAL_SMARTCARD_IO_INVERT_ENABLED
enum hal_smartcard_data_invert_status_t

HAL SMARTCARD data status definition.

Values:

enumerator HAL_SMARTCARD_DATA_INVERT_DISABLED

SMARTCARD Data Binary Inversion is disabled

enumerator HAL_SMARTCARD_DATA_INVERT_ENABLED

SMARTCARD Data Binary Inversion is enabled

enum hal_smartcard_tx_rx_swap_status_t

HAL SMARTCARD Swap Tx/Rx Status Definition.

Values:

enumerator HAL_SMARTCARD_TX_RX_SWAP_DISABLED

SMARTCARD Tx Rx Swap Pins is disabled

enumerator HAL_SMARTCARD_TX_RX_SWAP_ENABLED

SMARTCARD Tx Rx Swap Pins is enabled

enum hal_smartcard_bit_order_t

HAL SMARTCARD Bit order enum definition.

Values:

enumerator HAL_SMARTCARD_BIT_ORDER_LSB_FIRST

LSB First data is transmitted/received with data bit 0 first, following the start bit MSB First

enumerator HAL_SMARTCARD_BIT_ORDER_MSB_FIRST

0x00080000 Most Significant Bit First data is transmitted/received with the MSB first, following the start bit

enum hal_smartcard_parity_t

HAL SMARTCARD Parity enum definition.

Values:

enumerator HAL_SMARTCARD_PARITY_ODD

Parity control enabled and Even Parity is selected Parity control enabled and Odd Parity is selected Parity control enabled and Odd Parity is selected

enumerator HAL_SMARTCARD_PARITY_EVEN

0x00000400 Parity Control Enable Parity control enabled and Even Parity is selected

enum hal_smartcard_rx_overrun_detection_status_t

HAL SMARTCARD Overrun enum definition.

Values:

enumerator HAL_SMARTCARD_OVERRUN_DETECT_ENABLED

Overrun Rx errors detection enabled Overrun Rx errors detection disabled

enumerator HAL_SMARTCARD_OVERRUN_DETECT_DISABLED
enum hal_smartcard_dma_stop_status_t

HAL SMARTCARD DMA stop on Rx error enum definition.

Values:

enumerator HAL_SMARTCARD_DMA_STOP_NONE

No impact on DMA DMA disable on rx error

enumerator HAL_SMARTCARD_DMA_STOP_ON_RX_ERROR
enum hal_smartcard_nack_state_t

HAL SMARTCARD NACK management enum definition.

Values:

enumerator HAL_SMARTCARD_NACK_DISABLE

NACK disabled NACK enabled

enumerator HAL_SMARTCARD_NACK_ENABLE
enum hal_smartcard_prescaler_t

HAL SMARTCARD Smartcard prescaler enum definition.

Values:

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV1

USART input CLK \1 Input clock not divided USART input CLK \2

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV2

Input clock divided by 2 USART input CLK \4

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV4

Input clock divided by 4 USART input CLK \6

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV6

Input clock divided by 6 USART input CLK \8

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV8

Input clock divided by 8 USART input CLK \10

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV10

Input clock divided by 10 USART input CLK \12

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV12

Input clock divided by 12 USART input CLK \16

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV16

Input clock divided by 16 USART input CLK \32

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV32

Input clock divided by 32 USART input CLK \64

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV64

Input clock divided by 64 USART input CLK \128

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV128

Input clock divided by 128 USART input CLK \256

enumerator HAL_SMARTCARD_CLOCK_PRESC_DIV256

Input clock divided by 256

enum hal_smartcard_source_clock_prescaler_t

HAL SMARTCARD Smartcard SCLK prescaler enum definition.

Values:

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV2

SMARTCARD Output CLK /2 SMARTCARD Output CLK /2 SMARTCARD Output CLK /4

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV4

SMARTCARD Output CLK /4 SMARTCARD Output CLK /6

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV6

SMARTCARD Output CLK /6 SMARTCARD Output CLK /8

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV8

SMARTCARD Output CLK /8 SMARTCARD Output CLK /10

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV10

SMARTCARD Output CLK /10 SMARTCARD Output CLK /12

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV12

SMARTCARD Output CLK /12 SMARTCARD Output CLK /14

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV14

SMARTCARD Output CLK /14 SMARTCARD Output CLK /16

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV16

SMARTCARD Output CLK /16 SMARTCARD Output CLK /18

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV18

SMARTCARD Output CLK /18 SMARTCARD Output CLK /20

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV20

SMARTCARD Output CLK /20 SMARTCARD Output CLK /22

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV22

SMARTCARD Output CLK /22 SMARTCARD Output CLK /24

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV24

SMARTCARD Output CLK /24 SMARTCARD Output CLK /26

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV26

SMARTCARD Output CLK /26 SMARTCARD Output CLK /28

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV28

SMARTCARD Output CLK /28 SMARTCARD Output CLK /30

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV30

SMARTCARD Output CLK /30 SMARTCARD Output CLK /32

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV32

SMARTCARD Output CLK /32 SMARTCARD Output CLK /34

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV34

SMARTCARD Output CLK /34 SMARTCARD Output CLK /36

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV36

SMARTCARD Output CLK /36 SMARTCARD Output CLK /38

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV38

SMARTCARD Output CLK /38 SMARTCARD Output CLK /40

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV40

SMARTCARD Output CLK /40 SMARTCARD Output CLK /42

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV42

SMARTCARD Output CLK /42 SMARTCARD Output CLK /44

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV44

SMARTCARD Output CLK /44 SMARTCARD Output CLK /46

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV46

SMARTCARD Output CLK /46 SMARTCARD Output CLK /48

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV48

SMARTCARD Output CLK /48 SMARTCARD Output CLK /50

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV50

SMARTCARD Output CLK /50 SMARTCARD Output CLK /52

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV52

SMARTCARD Output CLK /52 SMARTCARD Output CLK /54

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV54

SMARTCARD Output CLK /54 SMARTCARD Output CLK /56

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV56

SMARTCARD Output CLK /56 SMARTCARD Output CLK /58

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV58

SMARTCARD Output CLK /58 SMARTCARD Output CLK /60

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV60

SMARTCARD Output CLK /60 SMARTCARD Output CLK /62

enumerator HAL_SMARTCARD_SCLK_PRESC_DIV62

SMARTCARD Output CLK /62

enum hal_smartcard_clock_output_t

HAL SMARTCARD Clock Output enum definition.

Values:

enumerator HAL_SMARTCARD_CLOCK_OUTPUT_DISABLE

Clock signal output on CK pin disabled The clock signal output is disabled Clock signal output on CK pin enabled

enumerator HAL_SMARTCARD_CLOCK_OUTPUT_ENABLE

0x00000800 Clock Enable The clock signal output is enabled

enum hal_smartcard_clock_polarity_t

HAL SMARTCARD Clock polarity enum definition.

Values:

enumerator HAL_SMARTCARD_CLOCK_POLARITY_LOW

Polarity Low Steady low value on SCLK pin outside transmission window Polarity High

enumerator HAL_SMARTCARD_CLOCK_POLARITY_HIGH

0x00000400 Clock Polarity Steady high value on SCLK pin outside transmission window

enum hal_smartcard_clock_phase_t

HAL SMARTCARD Clock phase enum definition.

Values:

enumerator HAL_SMARTCARD_CLOCK_PHASE_1_EDGE

The first clock transition is the first data capture edge The first clock transition is the first data capture edge The second clock transition is the first data capture edge

enumerator HAL_SMARTCARD_CLOCK_PHASE_2_EDGE

0x00000200 Clock Phase The second clock transition is the first data capture edge

enum hal_smartcard_timeout_status_t

HAL SMARTCARD Timeout status definition.

Values:

enumerator HAL_SMARTCARD_TIMEOUT_DISABLED

Timeout disabled Timeout enabled

enumerator HAL_SMARTCARD_TIMEOUT_ENABLED
enum hal_smartcard_tx_cplt_guard_time_indication_t

HAL SMARTCARD Pre guard time Tx complete indication enum definition.

Values:

enumerator HAL_SMARTCARD_TX_CPLT_AFTER_GUARD_TIME

SMARTCARD transmission complete (flag raised when guard time has elapsed) SMARTCARD transmission complete before guard time

enumerator HAL_SMARTCARD_TX_CPLT_BEFORE_GUARD_TIME
enum hal_smartcard_end_of_block_interrupt_status_t

HAL SMARTCARD End of block interrupt status definition.

Values:

enumerator HAL_SMARTCARD_EOB_IT_DISABLED

End of block interrupt disabled End of block interrupt enabled

enumerator HAL_SMARTCARD_EOB_IT_ENABLED
enum hal_smartcard_fifo_mode_status_t

HAL SMARTCARD Fifo status definition.

Values:

enumerator HAL_SMARTCARD_FIFO_MODE_DISABLED

Fifo disabled Fifo enabled

enumerator HAL_SMARTCARD_FIFO_MODE_ENABLED
enum hal_smartcard_fifo_threshold_t

HAL SMARTCARD Fifo threshold enum definition.

Values:

enumerator HAL_SMARTCARD_FIFO_THRESHOLD_1_8

FIFO reaches 1/8 of its depth FIFO reaches 1/8 of its depth FIFO reaches 1/4 of its depth

enumerator HAL_SMARTCARD_FIFO_THRESHOLD_1_4

FIFO reaches 1/4 of its depth FIFO reaches 1/2 of its depth

enumerator HAL_SMARTCARD_FIFO_THRESHOLD_1_2

FIFO reaches 1/2 of its depth FIFO reaches 3/4 of its depth

enumerator HAL_SMARTCARD_FIFO_THRESHOLD_3_4

FIFO reaches 3/4 of its depth FIFO reaches 7/8 of its depth

enumerator HAL_SMARTCARD_FIFO_THRESHOLD_7_8

FIFO reaches 7/8 of its depth FIFO reaches 8/8 of its depth

enumerator HAL_SMARTCARD_FIFO_THRESHOLD_8_8

FIFO becomes empty for TX and full for RX

struct hal_smartcard_handle_s
#include <stm32c5xx_hal_smartcard.h>

HAL SMARTCARD handle structure type.

Public Members

hal_smartcard_t instance

Peripheral instance

volatile hal_smartcard_state_t global_state

SMARTCARD state information related to global handle management

const uint8_t * p_tx_buff

Pointer to SMARTCARD Tx transfer buffer

volatile uint32_t tx_xfer_size

SMARTCARD Tx Transfer size

volatile uint32_t tx_xfer_count

SMARTCARD Tx Transfer Counter

uint8_t * p_rx_buff

Pointer to SMARTCARD Rx transfer buffer

volatile uint32_t rx_xfer_size

SMARTCARD Rx Transfer size

volatile uint32_t rx_xfer_count

SMARTCARD Rx Transfer Counter

hal_smartcard_fifo_mode_status_t fifo_status

Specifies whether the FIFO mode is used

uint16_t nb_rx_data_to_process

Number of data to process during RX ISR execution

uint16_t nb_tx_data_to_process

Number of data to process during TX ISR execution

hal_smartcard_tx_cplt_guard_time_indication_t tx_cplt_indication

Tx complete indication configuration: before guard time or after

void ( * p_rx_isr ) ( struct hal_smartcard_handle_s * hsmartcard )

Function pointer to Rx IRQ handler

void ( * p_tx_isr ) ( struct hal_smartcard_handle_s * hsmartcard )

Function pointer to Tx IRQ handler

hal_dma_handle_t * hdma_tx

SMARTCARD Tx DMA handle parameters

hal_dma_handle_t * hdma_rx

SMARTCARD Rx DMA handle parameters

hal_smartcard_cb_t p_tx_cplt_callback

SMARTCARD Tx complete callback

hal_smartcard_cb_t p_tx_half_cplt_callback

SMARTCARD Tx Half complete callback

hal_smartcard_cb_t p_rx_cplt_callback

SMARTCARD Rx complete callback

hal_smartcard_cb_t p_rx_half_cplt_callback

SMARTCARD Rx Half complete callback

hal_smartcard_cb_t p_error_callback

SMARTCARD Error callback

hal_smartcard_cb_t p_abort_cplt_callback

SMARTCARD Abort complete callback

hal_smartcard_cb_t p_rx_fifo_full_callback

SMARTCARD Rx FIFO full callback

hal_smartcard_cb_t p_tx_fifo_empty_callback

SMARTCARD Tx FIFO empty callback

hal_os_semaphore_t semaphore

USART OS semaphore

const void * p_user_data

User data pointer

volatile uint32_t last_error_codes

Last error codes

struct hal_smartcard_config_t
#include <stm32c5xx_hal_smartcard.h>

HAL SMARTCARD Global configuration structure definition.

Public Members

uint32_t baud_rate

Configures the SMARTCARD communication baud rate. The baud rate register is computed using the following formula: baud rate register = usart_ker_ckpres / baud_rate where usart_ker_ckpres is the USART input clock divided by a prescaler.

hal_smartcard_stop_bits_t stop_bits

Specifies the number of stop bits.

hal_smartcard_bit_order_t first_bit

Specifies whether MSB is sent first on the USART line.

hal_smartcard_parity_t parity

Specifies the parity mode. The parity is enabled by default (PCE is forced to 1). Since the WordLength is forced to 8 bits + parity, M is forced to 1 and the parity bit is the 9th bit.

hal_smartcard_nack_state_t nack

Specifies whether the SMARTCARD NACK transmission is enabled in case of parity error.

hal_smartcard_prescaler_t clock_prescaler

Specifies the prescaler value used to divide the USART input clock to provide USART clock source.

hal_smartcard_source_clock_prescaler_t sclk_prescaler

Specifies the SMARTCARD prescaler used to divide the USART clock, the clock sent to the smartcard is the output clock after the division.

hal_smartcard_clock_output_t clock_output

Specifies whether the CLK signal is output or not.

hal_smartcard_clock_polarity_t clock_polarity

Specifies the steady state of the serial clock.

hal_smartcard_clock_phase_t clock_phase

Specifies the clock transition on which the bit capture is made.

uint32_t guard_time_etu

Specifies the SMARTCARD guard time ETU (Elementary Time Unit) applied after stop bits.

uint32_t auto_retry_count

Specifies the SMARTCARD auto-retry count (number of retries in receive and transmit mode). When set to 0, retransmission is disabled. Otherwise, its maximum value is 7 (before signalling an error).